{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-07-30T14:03:29.724314Z",
     "start_time": "2019-07-30T14:03:29.030208Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>query</th>\n",
       "      <th>q0</th>\n",
       "      <th>docid</th>\n",
       "      <th>rel</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>303</td>\n",
       "      <td>0</td>\n",
       "      <td>FBIS3-16217</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>303</td>\n",
       "      <td>0</td>\n",
       "      <td>FBIS3-19093</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>303</td>\n",
       "      <td>0</td>\n",
       "      <td>FBIS3-21007</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>303</td>\n",
       "      <td>0</td>\n",
       "      <td>FBIS3-21026</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>303</td>\n",
       "      <td>0</td>\n",
       "      <td>FBIS3-23561</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   query  q0        docid  rel\n",
       "0    303   0  FBIS3-16217    0\n",
       "1    303   0  FBIS3-19093    0\n",
       "2    303   0  FBIS3-21007    0\n",
       "3    303   0  FBIS3-21026    0\n",
       "4    303   0  FBIS3-23561    0"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from trectools import TrecQrel, procedures\n",
    "\n",
    "# We load a qrel object from a file:\n",
    "qrels_file = \"./robust03/qrel/robust03_qrels.txt\"\n",
    "qrels = TrecQrel(qrels_file)\n",
    "\n",
    "# Internally TrecTools save the objects as Pandas dataframes\n",
    "qrels.qrels_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-07-30T14:03:31.672633Z",
     "start_time": "2019-07-30T14:03:29.865509Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 17 runs in path ./robust03/runs/\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Data from file /Users/joaopalotti/GitHub/trectools/examples/robust03/runs/input.Sel50.gz"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# We can directly load a set of runs from a directory\n",
    "path_to_runs = \"./robust03/runs/\"\n",
    "runs = procedures.list_of_runs_from_path(path_to_runs, \"*.gz\")\n",
    "\n",
    "runs[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-07-30T14:04:51.619711Z",
     "start_time": "2019-07-30T14:03:31.683622Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAAGqCAYAAADA2mjfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzde7ylZV3//9fbAXTyhAqeBhBUpEjU0RE10swTmH2BPIHaT00NLUn7WihkaaImSl/LDBNKSjMFBEJKFA+IZnIaHQRBUUAFRs1RxEOODgyf3x/XvWbW3uw9B1hr3/fMvJ6Px36w7ute994f9uy11ue67uv6XKkqJEmSJN12t+s7AEmSJGlrYXItSZIkTYjJtSRJkjQhJteSJEnShJhcS5IkSRNici1JkiRNyHZ9BzApO+20U+2+++59hyFJkqSt3Be+8IXvV9XOc53bapLr3XffneXLl/cdhiRJkrZySb413zmnhUiSJEkTYnItSZIkTYjJtSRJkjQhJteSJEnShJhcS5IkSRNici1JkiRNiMm1JEmSNCEm15IkSdKEmFxLkiRJE2JyLUmSJE2IybUkSZI0ISbXkiRJ0oSYXGuiDjn+PA45/ry+w5AkSeqFybUkSZI0ISbXc3D0VZIkSbeGyfUWyORfkiRpmEyuJUmSpAkxuZYkSZImZKrJdZIDklyR5MokR85x/oVJViW5uPt6ydi5FyT5evf1gmnGKUmSJE3CdtP6xkkWAccBTwauAy5KcmZVXT7rqSdX1eGzrr078HpgGVDAF7prfziteCVJkqTbapoj1/sCV1bV1VW1BjgJOGgTr90f+ERVXd8l1J8ADphSnNpGuBBUkiRN2zST6yXAtWPH13Vtsz0jySVJTk2y6+Zcm+SwJMuTLF+1atWk4pYkSZJulb4XNP4HsHtVPYQ2Ov3ezbm4qk6oqmVVtWznnXeeSoCSJEnSpppmcr0S2HXseJeubZ2q+kFV/aI7/CfgEZt6rSRJkjQ000yuLwL2TLJHkh2AQ4Ezx5+Q5D5jhwcCX+kenw08JcndktwNeErXJkmSJA3W1KqFVNVNSQ6nJcWLgBOr6rIkRwPLq+pM4BVJDgRuAq4HXthde32SN9ISdICjq+r6acUqSZIkTcLUkmuAqjoLOGtW2+vGHh8FHDXPtScCJ04zPkmSJGmS+l7QKEmSJG01TK4lSZKkCTG5lgbCTW4kSdrymVxLkiRJE2JyLUmSJE2IybUkSZI0ISbXkiRJ0oSYXEuSJEkTYnItSZIkTYjJtSRJkjQhJteSJEnShJhcS5IkSRNici1JkiRNiMm1JEmSNCEm15IkSdKEmFxLkiRJE2JyLUmSJE2IybUkSZI0ISbXkiRJ0oSYXEvaqEOOP49Djj+v7zAkSRo8k2tJkiRpQkyuJUmSpAkxuZYkSZImxORakiRJmhCTa0mSJGlCTK4lSZKkCTG5nuWMFStZcc0NXPCN69nvmHM4Y8XKvkOSJEnSFsLkeswZK1Zy1OmXsmbtzQCsvGE1R51+6aASbJN/SZKk4TK5HnPs2Vew+sa1M9pW37iWY8++oqeIZhp68m/iL0mStnVTTa6THJDkiiRXJjlyA897RpJKsqw73j3J6iQXd1/vnmacI9++YfVmtS+0ISf/Q0/8JUmSFsLUkuski4DjgKcCewPPSbL3HM+7M/BK4IJZp66qqod1Xy+bVpzj7rvj4s1qX2hDTv6HnPhLkiQtlGmOXO8LXFlVV1fVGuAk4KA5nvdG4K3Az6cYyyY5Yv+9WLz9ohlti7dfxBH779VTRDMNOfkfcuIvSZK0UKaZXC8Brh07vq5rWyfJw4Fdq+ojc1y/R5IVST6T5LFz/YAkhyVZnmT5qlWrbnPABy9dwluevg87LGq/liU7LuYtT9+Hg5cu2ciVC2PIyf+QE39wPvjW7JDjz+OQ48/rOwxJkoAeFzQmuR3wduBP5jj9HWC3qloKvAr4QJK7zH5SVZ1QVcuqatnOO+88kbgOXrqEpbvtyKP2uDv/feQTBpNYw7CT/yEn/s4HlyRJC2WayfVKYNex4126tpE7Aw8Gzk3yTeDRwJlJllXVL6rqBwBV9QXgKuBBU4x1izHU5H/Iib/zwSVJ0kLZborf+yJgzyR70JLqQ4Hnjk5W1Y+AnUbHSc4F/rSqlifZGbi+qtYmuT+wJ3D1FGPVBBy8dAkfvPAaAE5+6WN6jmY954NLkqSFMrWR66q6CTgcOBv4CnBKVV2W5OgkB27k8scBlyS5GDgVeFlVXT+tWLV1G/p8cG3dnBMuSduWaY5cU1VnAWfNanvdPM99/Njj04DTphmbth1H7L8XR51+6YypIUOZDy5JkrYuU02upSEYzft+9amXsGbtzSzZcTFH7L/XIOaDS5KkrYvJtbYJQ50PLvVpNF3F14QkTU5vpfgkSZKkrY3JtSRJkjQhJteSJEnShJhcSwPg9uySJG0dTK6lnrk9uyRJWw+Ta6lnbs8uSdLWw+Ra6pnbs0uStPUwuZZ65vbskiRtPUyupZ4dsf9eLN5+0Yw2t2eXJGnL5A6NUs/cnl2amztIStoSmVxLA+D27JIkbR2cFiJJkiRNiMm1JEmSNCEm15IkSdKEmFxLkiRJE2JyLUmSJE2IybUkSZvpkOPPW1cqUJLGmVxLkiRJE2JyLUmSJE2IybUkSZI0ISbXkiRJ0oSYXEuStBVxsaXUL5NrSRt0xoqVrLjmBi74xvXsd8w5nLFiZd8hSZI0WCbXkuZ1xoqVHHX6paxZezMAK29YzVGnX2qCLUnSPEyuJc3r2LOvYPWNa2e0rb5xLceefUVPEUmSNGwm15Lm9e0bVm9WuyRtjHPCtbUzuZY0r/vuuHiz2iVJ2tZNNblOckCSK5JcmeTIDTzvGUkqybKxtqO6665Isv8045Q0tyP234vF2y+a0bZ4+0Ucsf9ePUUkSdKwbTetb5xkEXAc8GTgOuCiJGdW1eWznndn4JXABWNtewOHAr8K3Bf4ZJIHVdXMyZ+SpurgpUsAePWpl7Bm7c0s2XExR+y/17p2SZI00zRHrvcFrqyqq6tqDXAScNAcz3sj8Fbg52NtBwEnVdUvquobwJXd95O0wA5euoSlu+3Io/a4O/995BMGlVhbJlCSNDTTTK6XANeOHV/Xta2T5OHArlX1kc29trv+sCTLkyxftWrVZKKWtEWwTKCkSXOxpSZhatNCNibJ7YC3Ay+8td+jqk4ATgBYtmxZTSYyOPmlj5nUt5I0JRsqEzik0XVJ0rZlmsn1SmDXseNduraROwMPBs5NAnBv4MwkB27Ctds0k3/JMoGSpGGa5rSQi4A9k+yRZAfaAsUzRyer6kdVtVNV7V5VuwPnAwdW1fLueYcmuX2SPYA9gQunGKukLYxlAiVJQzS15LqqbgIOB84GvgKcUlWXJTm6G53e0LWXAacAlwMfA15upRBJ4ywTKEkaoqnOua6qs4CzZrW9bp7nPn7W8ZuBN08tOElbtC2hTOComsmatTez3zHnDC4+SdLk9bagUZJuq4OXLuGDF14DDG8twnzVTAATbEnaiplca6KGluCMG3Js2vpYzUSStk1T3f5ckrZVVjORpG2TybUkTYHVTCRp22RyLUlTYDUTSdo2OedakqZgS6hmIkmaPJNrSZqSoVczsUygJE2e00IkaRszX5nAM1as7DkySdrymVxL0jZmQ2UCJUm3jcm1JG1jLBMoSdNjci1J2xjLBErS9JhcS9I2xjKBkjQ9VguRpG2MZQIlaXpMriVpGzTkMoGStCUzuZYGwgRHWs863JK2VM65liQNinW4JW3JTK4lSYNiHW5JWzKTa0nSoFiHW9KWzORakjQoQ6/DPZoPfsE3rme/Y85xuooWzCHHn8chx5/XdxjaCJNrSdKgDLkOt/PBJW2MybUkaVAOXrqEtzx9H3ZY1D6iluy4mLc8fZ9BVAtxPrikjbEUnyRpcIZah9v54JI2xpFrSZI20dDng0vqn8m1JEmbaMjzwcHFltIQOC1EkqRNNJr3/epTL2HN2ptZsuPiweweOd9iS2AQ8UnbCpNrSZI2w1Dng29osaXJtbRwnBYiSdJWwMWW0jCYXEuStBXYEhZbOidc2wKTa0mStgJbwmJLN+DRtmCqyXWSA5JckeTKJEfOcf5lSS5NcnGSzyXZu2vfPcnqrv3iJO+eZpySJG3phrz5DrgBj7YdU1vQmGQRcBzwZOA64KIkZ1bV5WNP+0BVvbt7/oHA24EDunNXVdXDphWfJElbm6EutgTnhGvbMc2R632BK6vq6qpaA5wEHDT+hKr68djhHYGaYjySJKknW8KccGkSpplcLwGuHTu+rmubIcnLk1wFvA14xdipPZKsSPKZJI+d6wckOSzJ8iTLV61aNcnYJUnSBA19Trg0Kb0vaKyq46rqAcBrgD/vmr8D7FZVS4FXAR9Icpc5rj2hqpZV1bKdd9554YKWJEmbZehzwqVJmWZyvRLYdex4l65tPicBBwNU1S+q6gfd4y8AVwEPmlKckiRpARy8dAlLd9uRR+1xd/77yCcMKrG2TKAmZZo7NF4E7JlkD1pSfSjw3PEnJNmzqr7eHT4N+HrXvjNwfVWtTXJ/YE/g6inGKmkDhrYwSpImya3jNUlTG7muqpuAw4Gzga8Ap1TVZUmO7iqDABye5LIkF9Omf7yga38ccEnXfirwsqq6flqxSpKkbZdlAjVJ0xy5pqrOAs6a1fa6scevnOe604DTphmbpK2Do+qSbivLBGqSel/QKEmS1CfLBGqSTK4lSdI2zTKBmqSpTguRJEkautGixVefeglr1t7Mkh0Xc8T+e7mYUbeKybUkSdrmDXnreG1ZnBYiSZIkTYjJtSRJkjQhTguRpCny9rIkbVscuZYkSZImxORakiRJmpCNJtdJ7prkmCRfTXJ9kh8k+UrXtuNCBClJkiRtCTZl5PoU4IfA46vq7lV1D+A3u7ZTphmcJEmStCXZlOR696p6a1V9d9RQVd+tqrcC95teaJIkSdKWZVOS628leXWSe40aktwryWuAa6cXmiRJkrRl2ZTk+hDgHsBnujnX1wPnAncHnj3F2CRJkqQtykbrXFfVD4HXdF+SJEmS5nGbSvEl+b1JBSJJkiRt6W5rnes3TCQKSZIkaSuw0WkhSS6Z7xRwr3nOSZIGzq3ZpS3HGStWsuKaG1iz9mb2O+Ycjth/Lw5euqTvsDSHjSbXtAR6f1pd63EBPj/xiCRJkrTOGStWctTpl7Jm7c0ArLxhNUedfimACfYAbcq0kP8E7lRV35r19U1a1RBJkiRNybFnX8HqG9fOaFt941qOPfuKniLShmxKtZAXb+DccycbjiRJksZ9+4bVm9Wufm3WgsYkd0/yiCS7TisgSZIkrXffHRdvVrv6tSlzrkmyB/B2YC1wJXDPJDsDL6qqVVOMT5K0jXLBpdQcsf9eHHX6pTOmhizefhFH7L9Xj1FpPptSLWQX4GTgd6vqa2PtDwbeluRU4JKqcit0SZKkCRstWnz1qZewZu3NLNlxsdVCBmxTpoW8Djiyqr6W5NQkP0pyHvA5YBHwHeAvphmkJEnStuzgpUtYutuOPGqPu/PfRz7BxHrANmVayMOr6rDucQH7VNU1SXYD/rqqvphk3+mFKEnSsDhlRdJ8NmXkevskoyT8/qyvd31Ddwxw86QDkyRJkrY0mzJy/WngIOA04PXAp5JcRUusj07yROCC6YUoSZIkbRk2Jbn+K+BjSb5aVf+Z5CxgJ+D7wF7A+4H/M8UYJUmSpC3Cpmwi870kzwLeleR7wPm0knyPBnYFnldV357r2iQHAO+gLXz8p6o6Ztb5lwEv777fT4HDqury7txRwIu7c6+oqrNv3f+iJEnbDueDS/3apDrXVXUVsH+SPYGHds3HVNVX57smySLgOODJwHXARUnOHCXPnQ9U1bu75x9Iq6V9QJK9gUOBXwXuC3wyyYOqauben5IkSdKAbEqd6zsALwMeCFwKvKeqbtqE770vcGVVXd19n5Noc7fXJddV9eOx59+RVo2E7nknVdUvgG8kubL7fudtws+VJEmSerEp1ULeCyyjJdZPBf56E7/3EmB8Y5nrurYZkry8WyD5NuAVm3ntYUmWJ1m+apUbRUqSJKlfmzItZO+q2gcgyXuACycZQFUdBxyX5LnAnwMv2IxrTwBOAFi2bFlt5OmSJKlnzgnX1m5TRq5vHD3YxOkgIytpCx5Hduna5nMScPCtvFaSJEnq3aYk1w9N8uPu6yfAQ0aPk/x4A9ddBOyZZI8kO9AWKJ45/oRugeTI04Cvd4/PBA5NcvskewB7MuERc0mSJGnSNqUU36Jb842r6qYkhwNn00rxnVhVlyU5GlheVWcChyd5Em10/Id0U0K6551CW/x4E/ByK4VIkiRp6DapFN+tVVVnAWfNanvd2ONXbuDaNwNvnl50kiRJ0mRtyrQQSZIkSZvA5FqSJEmaEJNrSZIkaUJMriVJkqQJMbmWJEmSJmSq1UIkSZK2FO4eqUlw5FqSJEmaEJNrSZIkaUJMriVJkqQJMbmWJEmSJsTkWpIkSZoQk2tJkiRpQkyuJUmSpAkxuZYkSZImxORakiRJmhCTa0mSJGlCTK4lSZKkCTG5liRJkibE5FqSJEmaEJNrSZIkaUJMriVJkqQJMbmWJEmSJmS7vgOQJEnSxp380sf0HYI2gSPXkiRJ0oSYXEuSJEkTYnItSZIkTYjJtSRJkjQhJteSJEnShJhcS5IkSRMy1eQ6yQFJrkhyZZIj5zj/qiSXJ7kkyaeS3G/s3NokF3dfZ04zTkmSJGkSplbnOski4DjgycB1wEVJzqyqy8eetgJYVlU/S/IHwNuAQ7pzq6vqYdOKT5IkSZNxyPHnAdbihumOXO8LXFlVV1fVGuAk4KDxJ1TVp6vqZ93h+cAuU4xHkiRJmqppJtdLgGvHjq/r2ubzYuCjY8d3SLI8yflJDp7rgiSHdc9ZvmrVqtsesSRJknQbDGL78yS/CywDfmOs+X5VtTLJ/YFzklxaVVeNX1dVJwAnACxbtqwWLGBJkiRpDtMcuV4J7Dp2vEvXNkOSJwGvBQ6sql+M2qtqZfffq4FzgaVTjFWSJEm6zaaZXF8E7JlkjyQ7AIcCM6p+JFkKHE9LrL831n63JLfvHu8E7AeML4SUJEmSBmdq00Kq6qYkhwNnA4uAE6vqsiRHA8ur6kzgWOBOwIeSAFxTVQcCvwIcn+RmWgfgmFlVRiRJkqTBmeqc66o6CzhrVtvrxh4/aZ7rPg/sM83YJEmSpElzh0ZJkiRpQkyuJUmSpAkxuZYkSZImxORakiRJmhCTa0mSJGlCTK4lSZKkCTG5liRJkibE5FqSJEmaEJNrSZIkaUJMriVJkqQJMbmWJEmSJsTkWpIkSZoQk2tJkiRpQkyuJUmSpAkxuZYkSdKtdsaKlay45gYu+Mb17HfMOZyxYmXfIfXK5FqSJEm3yhkrVnLU6ZeyZu3NAKy8YTVHnX7pNp1gm1xLkiTpVjn27CtYfePaGW2rb1zLsWdf0VNE/TO5liRJ0q3y7RtWb1b7tsDkWpIkSbfKfXdcvFnt2wKTa0mSJN0qR+y/F4u3XzSjbfH2izhi/716iqh/2/UdgCRJkrZMBy9dAsCrT72ENWtvZsmOizli/73WtW+LTK4lSZJ0qx28dAkfvPAaAE5+6WN6jqZ/TguRJEmSJsTkWpIkSZoQk2tJkiRpQkyuJUmSpAkxuZYkSZImxORakiRJmhCTa0mSJGlCpppcJzkgyRVJrkxy5BznX5Xk8iSXJPlUkvuNnXtBkq93Xy+YZpySJEnSJEwtuU6yCDgOeCqwN/CcJHvPetoKYFlVPQQ4FXhbd+3dgdcDjwL2BV6f5G7TilWSJEmahGmOXO8LXFlVV1fVGuAk4KDxJ1TVp6vqZ93h+cAu3eP9gU9U1fVV9UPgE8ABU4xVkiRJus2mmVwvAa4dO76ua5vPi4GPbs61SQ5LsjzJ8lWrVt3GcCVJkqTbZhALGpP8LrAMOHZzrquqE6pqWVUt23nnnacTnCRJkrSJpplcrwR2HTvepWubIcmTgNcCB1bVLzbnWkmSJGlIpplcXwTsmWSPJDsAhwJnjj8hyVLgeFpi/b2xU2cDT0lyt24h41O6NkmSJGmwtpvWN66qm5IcTkuKFwEnVtVlSY4GllfVmbRpIHcCPpQE4JqqOrCqrk/yRlqCDnB0VV0/rVglSZK0dTrk+PMAOPmlj1mQnze15Bqgqs4CzprV9rqxx0/awLUnAidOLzpJkiRpsgaxoFGSJEnaGphcS5IkSRNici1JkiRNiMm1JEmSNCFTXdAoSZKkrd9CVeLYEjhyLUmSJE2IybUkSZI0ISbXkiRJ0oSYXEuSJEkTYnItSZIkTYjJtSRJkjQhJteSJEnShJhcS5IkSRNici1JkiRNiMm1JEmSNCEm15IkSdKEmFxLkiRJE2JyLUmSJE2IybUkSZI0ISbXkiRJ0oSYXEuSJEkTYnItSZIkTYjJtSRJkjQhJteSJEnaKp2xYiUrrrmBC75xPfsdcw5nrFg59Z9pci1JkqStzhkrVnLU6ZeyZu3NAKy8YTVHnX7p1BNsk2tJkiRtdY49+wpW37h2RtvqG9dy7NlXTPXnmlxLkiRpq/PtG1ZvVvukmFxLkiRpq3PfHRdvVvukmFxLkiRpq3PE/nuxePtFM9oWb7+II/bfa6o/d6rJdZIDklyR5MokR85x/nFJvpjkpiTPnHVubZKLu68zpxmnJEmSti4HL13CW56+Dzssaunukh0X85an78PBS5dM9eduN61vnGQRcBzwZOA64KIkZ1bV5WNPuwZ4IfCnc3yL1VX1sGnFJ0mSpK3bwUuX8MELrwHg5Jc+ZkF+5tSSa2Bf4MqquhogyUnAQcC65Lqqvtmdu3mKcUiSJEkLYprTQpYA144dX9e1bao7JFme5PwkB8/1hCSHdc9ZvmrVqtsSqyRJknSbDXlB4/2qahnwXOBvkzxg9hOq6oSqWlZVy3beeeeFj1CSJEkaM83keiWw69jxLl3bJqmqld1/rwbOBZZOMjhJkiRp0qaZXF8E7JlkjyQ7AIcCm1T1I8ndkty+e7wTsB9jc7UlSZKkIZpacl1VNwGHA2cDXwFOqarLkhyd5ECAJI9Mch3wLOD4JJd1l/8KsDzJl4BPA8fMqjIiSZIkDc40q4VQVWcBZ81qe93Y44to00VmX/d5YJ9pxiZJkiRN2pAXNEqSJElbFJNrSZIkaUJMriVJkqQJMbmWJEmSJsTkWpIkSZoQk2tJkiRpQkyuJUmSpAkxuZYkSZImxORakiRJmhCTa0mSJGlCTK4lSZKkCTG5liRJkibE5FqSJEmaEJNrSZIkaUJMriVJkqQJMbmWJEmSJmS7vgOQJEmSpuXklz5mQX+eI9eSJEnShJhcS5IkSRNici1JkiRNiMm1JEmSNCEm15IkSdKEmFxLkiRJE2JyLUmSJE2IybUkSZI0ISbXkiRJ0oSYXEuSJEkTYnItSZIkTYjJtSRJkjQhJteSJEnShJhcS5IkSROSquo7holIsgr41gS/5U7A9yf4/SZtyPEZ26035PiM7dYbcnxDjg2GHZ+x3XpDjm/IscGw49uWYrtfVe0814mtJrmetCTLq2pZ33HMZ8jxGdutN+T4jO3WG3J8Q44Nhh2fsd16Q45vyLHBsOMztsZpIZIkSdKEmFxLkiRJE2JyPb8T+g5gI4Ycn7HdekOOz9huvSHHN+TYYNjxGdutN+T4hhwbDDs+Y8M515IkSdLEOHItSZIkTYjJtSRJkjQhJteSJEnShGzXdwBDl+ROVfXTnmMIsC+wpGtaCVxYTpi/VZJcWlX79B3HfJLsWVVf7zuOcUnuXlXX9x3HSJK7Agcw8zVxdlXd0F9U2hYkuRdjf3dV9T99xrMlSfI7wDlV9aPueEfg8VV1Rr+RQZJ9gF/uDr9SVV/uMx5t2VzQuBFJrqmq3Xr8+U8B3gV8nZZAAOwCPBD4w6r6eF+xzZbkwcDewB1GbVX1vp5iefp8p4B3z7er0hAM4G9uP+CfgJuBFwFvAu4P7AA8u6rO6ys2gCTPB14PfJyZr4knA2/o629uUwy5Y5fkhKo6rOcY7gIcRfv3/GhVfWDs3Luq6g97jO1hwLuBuzLz7+4G2nvxF/uKbUOSvK6qju47DoAkF1fVw2a1raiqpT3GdFfgw8CuwCW0z4h9gGuAg6rqxz3GdkpVPbt7/Naqes3YuY9X1VP6im1ckk8AzxoNbiS5G3BSVe3fc1z7AwczcxDmw1X1sWn/bEeugSSvmu8UcKeFjGUO7wCeVFXfHG9MsgdwFvArfQQ1W5LXA4+nJddnAU8FPgf0leicDPwbMFfv8Q5ztC2oJG+f7xTtw7tPfwM8m/a3/xHg4Kr6XJKHA+8E9uszOOC1wCNmj1J3b+gX0N/f3CiODXXs7r2QsdwigOTu850CfmshY5nHP9MGEk4DXpTkGcBzq+oXwKN7jQz+BXhpVV0w3pjk0bS4H9pHUJvgJcAgkmvmnoradx7yRmA58ISquhkgye2AY4A3A3/UY2x7jj1+MvCaseMhDRDtNP5+XFU/THLPPgNK8rfAg2ifB9d1zbsAr0jy1Kp65TR/ft9/1EPxV8CxwE1znOt7Xvp2rP/DGLcS2H6BY9mQZ9I+XFZU1e91t07f32M8lwB/PdetvSRP6iGe2Q4DXg38Yo5zNy5wLLNtX1WXAiRZVVWfA6iqLyZZ3G9oQEsE5+o03dyd69uQO3argG8x8/dU3XGvH4adB1TVM7rHZyR5LXBOkgP7DKpzx9mJNUBVnZ/kjn0ENJJkvtHVAEN4zY4s7wYWjuuODwe+0GM8AE8CHjJKrAGq6uYkfwZc2l9YLZRbeW6h3Zxkt6q6BiDJ/eg/vt+qqgfNbkxyMvA1wOR6AXwROKOqbvEiT/KSHuIZdyJwUZKTgGu7tl2BQ4H39BbVLa3u3pBu6m7tfo8WZ1/+GJjvA+d3FjKQeVxE64jcYopFkr9c+HBmGO9QHjXr3A4LGcg83gx8McnHWf+a2I02svPG3qJab8gdu6uBJ44+BMcluXaO5y+02ye53SjRqao3J1kJfJb+7yJ+NMlHaCNh4+/Fz/YOihUAACAASURBVAemfpt5I24AHjnX/O+B/LuO/BHwF7QOKMAngJf3Fw4Aa6rqFgNrVXVTkrkGPxbSLyVZSntPXtw9DsPrNL0W+FySz9BieyxtAKlPP0/yyKq6aFb7I4GfT/uHO+caSLIX8IOq+v4c5+7V94KVJL8CHMTMeUNnVtXl/UU1U5J3AX9GS/r/BPgpcHFV/V6vgQ1Ukp2Bn1XV//Ydy2zdKOEnq+pns9ofADyjqt7WT2QzYrkbsD+3XND4w/6iapI8FvjWPAnssqpa3kNYo5//cuBzVfWlOc79UVW9s4ewxmN4G/DxqvrkrPYDgHdW1Z5zX7kwkjyVud+Lz+ovKkjypi6OC+c4N2Ou7lAkWUS7G9DbnOYujq8Cz+GWd70CvL+qept6meRcNjACXFW/uXDRbFiSnVg/dev8ufKpBY7n4cA/AHdm/d3/XYEfAS+fazB1oj/f5HrLlWS/qvrvvuOYLcnuwF2q6pIeY9gOeDFtlPq+XfNK2sKV91RV31Mv1kmyPW1uXQFfn2sUpU9Jfml2oi1JmyvJB4CXAWtpd+/uAryjqo7tMaZPb+j8kBLYoekS2HkNYZFvknszs7rPdxfk55pcr9eNJr6GW1a8eEKPMS2iLS5bAnysqr6c5Ldpo8SL+1xlPdL98VJV3+1+h48Frqiqy3qM6YO0W6XvZeZihhcAd6+qQ/qKbVw3IncCbWV6aDH+/hCqwCT5NVrVkDtV1W5JHkpb0NVbxYaNGUI1jiF37Daw2BKAqjp9oWKZS7e4/EdV9Z5Z7S8G7lxVf9tPZJDkIaMBg65D/BpaidQvA2/quwO6JZSnHFULSfI84OHAkcAXquohPYc2SEkeCVw7Sgi7SknPoK2b+Mu+y6OOdUzuACwDvkT7HHsIsLyqHtNXbNDva8Lkekw3h/Nk4E9pvesXAKv6vKWW5F9otzIuBB4FfJv2R3zkQGqDvpT2BhngrcALaR82+wHHzv6QXMC4vjbXYoaNnVto3S3JA6vqa93xg2ilgnqvApPkAtpC1TNHnbgkX66qB/cc16DLLA65Y5fkn7uH9wR+DTinO/5N4PNV9du9BNZJ8gXg0bM7IEl2oH1Y95aEJfliVT28e/z/gHvQqoQcDNyjqp7fY2xbRHnKJJcBDwM+APx9VX0myZeqqvdKK91A1tOA3Rlbj1ZV81V2WoiYvkirFnZ9kscBJ9HmrT8M+JWqemZfsY1Lcjrw+rGF8A+mJf+9xdf3a8IFjTPdo6rek+SVVfUZ4DNJZk+GX2jL6FYyJ7kD8F3aivof9BzXyOHAr9IWV3wLeGA3gn034NP0t+jy+iTPAk6bVV7pWUDv83LH/HSUWANU1deSDGYedlVdm8yYiri2r1jGDLkaB7QygbM7b9cB5yf52lwXLJTRGohuIGHvqvpOd3wfWqm5vm0318h+Va3JrD/EHoz//CfSFhDemOSztBG7Pg26POWY44Fv0n5fn+2qSvQ653rMf9AWul1Kqzw0BIvGRqcPAU6oqtOA05Jc3GNcs+01SqwBujvsfQ8Q9fqaMLmeafSm/p0kT6ONEs9XF3ahrBlbOf/zJFcPKLEGuLG7HfqzJFeNbl9Vq3PZ522RQ2kj6e9K8kPaB+OOtJG6Q3uMa7YLk5wJnEJLFp8FXNAtKqSqzuwxtmu7qSHV3QZ/JfCVHuMZGXI1DtgyOna7jhLrzv/QKq707XZzLSJPK+3Zt7um7TB4O+D2o05AVVXP73Uw/PKUAFTV3wF/N9b0rSRDmdO8ywCnpyxKsl23DueJzKzAMaT87ZIk/8T68rvPo71P96nX18SQ/nGG4E3dHJ0/oW2WcRfg//YbEr+cZPRHGuAB3XFo7+t9vxlUku27D5qnjRq7UfbeaoRX23TnkC6We3RtQ+qUjNyZtnp5tJPVT2h/d8+ivTH0mVy/jLaJ0RLabbWPA0OYbz30MotbQsfuU0nOBj7YHR8CfHIDz18oxwIfSfIntBKpAI/o2v+6t6iazwCjetvnjzoB3ZqTXisjMPzylMC6TtJfAfetqqcm2Rt4DMMoK/vRJE8ZwnqXMR+k3UH/PrAa+C+AJA+kfW4Mxe8Bf8D62tGfpVXq6FOvrwnnXA9cd9tsXlX1rYWKZS5JdgO+M8ccySW0OWG9fWAn2ZfWAbmoexM/APhKVX20r5i2BEl2rao5a+Mm+e2q+s+FjmlLNeSOXTcK+7ju8LNV9e99xjOSVu7uSGA0t//LwDG+bjcsAy5POZLko7R56q+tqod2i39X9L0IGda9Ht5PGxS6kfUDWHfpOa5HA/ehlaj8367tQbQyhiv6jG3o+nxNmFyzbpT1ENot2/+g7Zz3WOAq4I3VY73Grod6r9kl95LsB3y3qq7qJ7KZuhGJ8XI3fdcGfz1tC/btaBsVPIo2B/zJtBfXm3sMb53MvQ36j2iLtz6y0PHAukWWB3Sj/+Ptvwf8eVU9oI+4Zktyf9rI+mNot/rOA/5vVV3da2BseR27btrKc6rq3/qOZaiGXmllpBtJ35d25+uiWqDSY5siyUVV9cgkK8YWSV9cVQ8bQGzfoNUwv7QGnBil7Qb6dODQqnraxp4/5Vh+Gfgb2vvvK2gbBB0EfB14QVUNYRphL/re2nso3gc8BXgRcC7t1sHf027R/0tvUTV/y9y3wH/cnetVkoclOZ/2e3tb9/WZJOen7SbVl2fSKpY8jrYD2MFV9UZaL3YQZfg6d6Yl/td2X48E9gD+sKtI0IdXAR9Psm7DjiRHde2/0VNMc/kAba76vWkl7z7E+mkOvek6dn8H/EOSt9DeS+4IHJW2nXefsd0lyVFJ/j7JU9IcTtu58dl9xjYuyf2TnJlkVZLvJflw15nq0//ZwFevVVZG0nYUvpCWfD2TNn3lRf1GNcP/dndzCtaNyg5lesO1wJeHmFgn2SHJ7yT5EPAd4AnAu3sOC1oZ2XfRRvzPoe1UenfatIu/7zGuDUoy9W3tHblmfXmx7hbVdVV177FzvZYJGvX05zk3hJq+F9NqH18wq/3RwPF9/e5mjYyse9wdD2KkBCDJecBjuwUro/q5n6XdOflSVf1qT3E9kbay/2DgJbSRsKcN7BbzJbPXHPT9eu1iuJRWKuv2tOo+u1TVj5MsBi7ouZzch2l36M6jLZC6J+329yurajDVB7oO+3Gs7ywdCvxRVT2qv6iGL8kVwK+NpiF1ieznq2qvfiNr0jYdeSdtys+XgZ2BZ1aPG46NpJW9vT/wUWDdtuc9l+J7Cm33yKfQ7ryeTNupdPe+Yho363P2yqp64Ni5daUre4qt15KtLmhs1gBU1U1Jvj3rXN+lx3bcwLnFCxbF/O44O7EGqKrzu9tXfVmT9TsLPmLU2C1YHUqZJWi9/F9i/d2JxbRayDcl+cX8l01XVX2qmwZyLvB54AlV9fO+4hmXZFTB56NJjqTVfi3aHYlet6Hu3FRVa1lfQefHAFW1Oknff3v3H3XI01b3fwfYbSj/tmN+qar+dez4/UmO6C2aMfMtyqueavrP8gPaHdeRn3Rtg1BVX0zyG8BetCTnirlKL/bkG93XDt3XEHyMtojx16vqGwBJ3tFvSDMsGns8uxPS9++w15KtJtfNLkn+jvZiHz2mO14y/2ULYnmS36+qfxxv7G7/faGnmMZ9NMlHaFNrRovgdgWeT3tj6MvjquoXAKNyaJ3taZt5DMXbgYuTfIr29/Z44NiuY3JuHwEl+QntDSm00dcnAt9LMogFPrS/+1F8AC8dO1fAUQse0UxD7titS2Sqam2S6waYWMM8HadRx6r63ZnuX+gW5XXHX6N9kPeWXKftbAlwJa2U54dpv7eD6L8kGrBuFP25wC93TV+hlbvtdZfBkap6A7SpU+2wfrKRSxbCw2l3bT6Z5Gra62HRhi9ZUMcluVNV/bSq3jVq7NaK9V19qNeSrU4LAZJsMNmqqvcuVCyzdaMk/04bXR8l08tovcLfGcJilbTV/Qcxc0XumVXV6yhilwzuy8y4LhzanLoku9DmXUOLb85KHdoyJLn9qGM3q30n4D41ttnCQkuyFhhtUhTanZKfMZDKCCPd4rL5VFX1Nv96iIvyunn+8xoljn1J21DkHOBsYAXt720pbYH5E6rqqz2GB0CSZbRO0527ph8BL6qqIQxikbbnwHNo259/Cfj3qjqh36iGK8ljgW9V1TVznFtWVcun+vMHlmcMTpLd5vrH6SGO32R9aarLquqcDT2/L0Pp9Xdz1d5FW7U8vvXpA4E/rAHVMk1b3b8bM7fc/Xx/Ec0vyTVVNYTNRkir9/5B4OQhVAgZt6V07LT5kpxLS3A+UVUP79aXvLWqBrPYN8mdAKrqp33HApDkVOCUqjplVvszgOdW1TP6iWxGLJcAL6+qUS3pXwfe1ecaibmkVfZ5Eq1aSK+LVbt1ai+m7S9w3655JfBh4D0DmvKz4EyuO0keQ/sg/GxVfS/JQ2i1Vh9bVbv2Gx0k+deq+v821taXeXr9L55273AD8XwFeGrdspzcHsBZVdX31qwAJPkr4Hdpt0hHUwaqqn6rv6jml+TaIbwegFEN+EO6r5tpt+ZP6bszPPSOXffhTFXdnGQHWqf9mz1PtZghyRuBv+zmro867e+obvv2Pg18Ud6DgX9l/c7C3weeX1WX9RdVW2g536LKDZ1bSLMXvndtvS7K62LYDlhbVZVkV9pdzqtqADWuk3wQuAF4L3Bd17wLberl3auqt8pcSX4JOJw2PeqdtOk1Twe+Chw97Y6nc66BJMfSSildDLwmbeeylwBvoZXnG4IZVSO6F9wj5nluH06kJQ7jvf4Tgb56/dux/sU+biVt3vVQPAN40EDnvc5lML3xahsovQ14W1rZwL+g7YzY95zEdwBPmq9jB/TWsUtyMK0KzM1JXgb8GfBTYK8kf1BV/9FXbLNsB1zYLaq9F62s1zv7DCjJI4FrxxblvZT2+v04c7/X9OEE4FVV9WmAJI8H/hH4tT6DYv1UpM09N3VdZwlaCdnjaXfDRvP8z+0rLoAkv097T/tp1+E8grZz6dIkJ1bVW/uMD3hEVT1oVtt1tBKQX+sjoDH/QlsHthj4CG0A61jaLqv/AEx1YNLkunkasLSqfp62o8+1wINnfzj2Ia2+8J8Bi5P8mPWLuNbQ3kiHYu0osQaoqs8luanHeE4ELkpyEjMXWh7KMLbaHfkG/SeDM4wtjrrFKeBOCxnLxswavV5L2wCqb0Pu2L0eeCjtA+dLwCOr6oru93gabROt3lXVUUk+CVxAKx34uKq6suewjqfdjoeWrL4W+CNa2cUTaHWl+3bHUWINUFXnpt+qTSP3nOd9JbSR/z7N3k9gfP5634MJfww8gHZH+CvA/arq+92o7EW0xLtP1yd5FnDaqHBAd2fsWbTXbZ8eVFXP7qbofYc24FFJPkd775sqk+vm56ORw6r6YZKvDyGxBqiqtwBvSfKWquq7CsItDLXXX1VvSXIGbaHlY7rmlcDzquryvuIaSfI3tN/TT4AvdonEeG3V+RLchXDnDZwbTBmoJBfQktUPAc8a0LzrQXfsRougu/nzV3Rt3xpNFxmCJI+jbcRzNLAP8M4kL66q2aVSF9KisakzhwAnVNVpwGlp9f6H4Ookf0GbGgJtytkQXhf/yPzvK/+0kIHMVlW/2efP34g11fYW+GFaHenvA1TVz5Ks6Tk2aO9pbwXelWSUTO9Iq8l9aG9RjekS6rNG612646l3mkyum/snObN7HGCPsWOq6sB+wlqvG8l5CLA7Mxe+9b3l7pB7/V8D9qmq5/Ucx1xG5YEuo9+ShbfQd2WBzfD8UXI4JFtAx+523SjTi8baFtF/Xdpxf03rMF0O6zaEOIf1Zdz6sCjJdtU2fHoicNjYuaF8lr4IeANwOu39978YwNTGDb2n9D2ynuSdwJ/NXoSftrX331fV1Mu2bcDitJ2Obwfs0D1O9zX1Ws0b0w1CHgLrSi1S3QZGA7A868sEjr/XPYCZteCnwgWNQDd/bl5V9ZmFimU+SUbzly9j5sK33t84h6y7BfSEqhpCL3+LkVZe8Shg767pMlpFhN43aelu8z2LljycStsK+CDaQpV318y65r3pkoafjy3Kux1wh2r1r/uK6ZHApbPn+CfZnbZRxfv7iGu2JItGv7extnv0+cGdtnX9b9EWCe4GPLwbBXsg8N6q2q+v2Lr4FtFeo3/aZxzzSbIEuA9wSVWtSXJP2rSHF1bVfTd89VTjei2tA/IXVfWBbsrFX9IqYLy6qv69x9g+vaHzQx11T/Jk2u/uyX3HMpckqSknvybXY7oPw9Vjc4cWAbfv88NwJMnlVbX3xp/Zj7QNMl4PPK5r+gxtRe6P+osKkryPtoDsTMYWzlSPW9pCW5nOBkb2+1yh3i2ieSlt/vKo2ssy4Bjgn6rn2qpJ3kXbtnsH2s6Wt6f9+z4N+J+qemWP4a2TtoX3k0ar0tPKo328qvpeXAawbqfLIVUJGcn6XRCXVNUBGcguiGll9+5D+3f8367tQcCdquqLfcbWxXJ+VT267zhmS/LHtDnqV9Jer++iTSd4H/C2qvpOj+GR5P60BbN3ppWUOwV40xA++4csyROAd9N+Z2fQ/k3/mTay/ua+76x3dx/m2oPjK9P+2UO5lTUUn6ItWBmVaFlMWwk+hA/D85LsPYTbyvM4kTbV4dnd8f9He5E9vbeImqu6r9ux4bnEC220+OlltAWNozmSz6MtzOvT/6WNYo4nXed0o9mfo/+FtI+tqn2SbA98l7Yxy5quLFTvCc6YO4yXe6qqn3ajYr1JshutwsoTaSW0klbm7hzgyKGsNWGAuyACVNX5c7T1XRVh3IpuSuOHmDmY0Pf0wcOAvarq+u5v8GvAfjWQDVpYfzd4O9r78VeGklgn2Zd2l/qirpN5AC2+j/YcGrRpoYcB5wFP7f57ZFX9fa9RAUleQ9t05yTgwq55F+CDSU6qqmOm+fNNrmca3IfhmPfREuzv0ha+jXZUG0qB+wfUzI0A3jCERT5zzfXr3tx7VVVXdbE8cdYo9YokXwRe009kQLujdYvRzKr6QZuR0bubAKrqxrTd8tZ0xzclGcSUkM7/Jnn4aEQzySOA1T3HdDLwt7T536PpKoto02xOAoYy6rlTVZ3SVUsa/dv23encEtwB+AFtqtRI0eZg9+nno/eUqromrbb1IBLrbgHoC4DXVtXJ3fSVdyR5CfAHfQ5ope28+VRguySfoNW4/jRwVPfe8ua+YutUVZ3bPT4jycohJNadFwO/WrM2sknydto0R5PrBTTED8OR99BGgy9lfS97SFYn+fWq+hxAkv3o+XeXDWwMRKveMASLkjx6NCKW5FH0X5rvx0keWlUzyhUleSgLsBBkE3x3bKHKAaPGtJ0uhzS3/o+BDyX5Nq0zfG+6xT892qmqTh5v6JLsk9Lq6A7F/3YLpArWTcfodYrZlqAGsMnOPHZJ8ndjx/cZP66qV/QQ08hOtFK8P+liWQk8s7tTdxo91qWn3eF8GG0qzXeBXarqx0n+mlamsu/kesdusfHIduPHPd8xuZk2XeVbs9rvwwLkUM65HpO2y+DJwIwPwyH0sJOcV1WP2fgz+9ElXu8D7to1/RB4QfW0a1lmbgz0QGB8Y6DjZy/o6ku3wOyfWb/yezXwoqq6qMeYfh34ty6u0d/+Mtrozu+OOlBD062ZuGNVfa/vWEa6qSuj3eeumD2K0kM8JwHX03ZUGy8T+AJa4v3s+a5dSBnwLohDlFvuRncIbYObBdmNbmOSvGBD56vqvQsVy+ZIcvuq+sXGnzm1n79u18jM2kEyycVV9bC+Yuti+OcNnO614EKSA2ibT32d9e91u9HygcOraqpVukyuO91K/kfTCrMP5sNwpFvEtSNtk4fxesh93+4b/e6e2d3GvQtAVf2455gup63mH9zGQHPJwMoYdQvKXs76nUEvB46rrkZy37oFtAcwc6HK2VV1Q39RNUmeUFXnzBrRWafP12zaducvZuYin+to7yvv6TORmC1tF9q9aAMdg3kvHqIkp7B+N7q9aBuOnEzbje7eVTXV3ei2Bkl2oXVMfp31ZQxfWVW97b6ZVsv/N6vVtR6V0By9/326z4XvW4IuN9mXmZ8TF9WsSkRT+dkm1+vN7hkOyTw9xF57huOSLK+qZX3HMZLki+NvPEP9t+1uxf+/UVLYdQT+uKpev+ErF0aSxcBuNaB60kmeT6tM83HamyW0hSpPBt5QVe/rKzaAJG+oqtd3r9nxN9jROolBvGaHLsmvccu6/r3+2w7VaBQzWbcb3X2qqrrjL/W9NqebsvU62uvhdbSdLZ9OG1l/Zd/VQgC6Oc0fYOYGPM+rHsvJzTdynmQn2r/xpT2EdQtJdgSezy1fr31O9xmtJ7msqha8Pr7J9ZhuHtN5wOk1sF9MkjsMZSrDXJIcQ6v/ejIzV6n3UuYryQ3AZ8eaHjd+XAPYGAjmTvpndwz6kuT/0Dbz2KGq9kjyMNot5l5/d0muAB41e5S665hcUFUP6ieymbrFSONGO4Qd3UM4wLrpUldW1fGz2l8K7FFVR/YT2UxJ/pW27fPFrK+eU31/WA/V+BSBJCfWzE0zvlRVD+0vOkjyMeAjwB2B59KmnX0AOJhWrvKgHsMD5p5mMZCpF+GWo68XDilHSfJ54HxmrQkbwnSfJB8G/qiqrlnIn+uCxpleCrwKuCnJz1k/0nSXfsMC4MtJ/od2q+q/gM9VzzWkZxkt1Hr5WFsB9+8hFmi3vcfN3klyKBYl2WFU8SLJHRjOTnl/SXtTPxegqi5OskefAXXC3DXCb+7ODcX4PNc70NYATL2+6kY8gVa/fLZ/BC6hLfgdgmXA3kNKIAau193oNsG9quqdAEn+sKre2rW/M8mLe4xr3A+S/C7wwe74ObTKK71J8hRaTfCvM/Mu3QO73+PHewtupjtU1av6DmIedwMuS3IhMwf+pjpIZHI9pqqGVAd5hqp6YFoJucfSNss4LskNffeqR6pqCEnXOjWAXTU30UnAJ9J24IS2U9i/9RjPuBur6keZWX5vCMnOm4EvJvk4MxeqPBkYTMWLqprRoevujJ3dUzgjt58rYa2qm5Nh1FnsfJm2oLz36QJbgqp6yTztVyV57ELHM4fbjT2ePbXndgzDi2hzrv+G9j73eaDv6ivvoI3sf3O8sRvkOIt+K5mM+9e0zcf+k5lrwoawQdVf9PFDTa5pu/hU1Ve7Feq3UMPYeWsXYD9acv1QWp3G3qs2zLdoa6SvxVtJLmXDOyAOoj54Vf1VkktomxdB263sI33GNOayJM+lja7vCbyC9oHTq6p6b9pGGfuz/lbpucBRVfXD3gLbuF+ijTr1aXWSPavq6+ON3b/vUMqOQiuPdnk32jT+YT2I6VxDlB53o9sEHx4bWf/zUWPa1vGD2ISnqr5FWwA6JNvRFhzPthLYfoFj2ZA1wLG0TZ9Gn7t93rlep6o+0y3Qf2TXdGEtQEUp51wDSU6oqsOSfJq5FyA9YZ5LF0za5hgXAX9VVR/uO56RoZbiSXK/DZ3v3kh7k+TjVfWUPmPYmK6812uBp9BeC2cDbxzq3P9uZfhzqmoQI/+zOniLaOXkjq4eN1lIq937TuBNzCyzeBRtIe1ZfcU2LslvzNW+Bd2RWlCZuRvdKBnbBTgUmPpudFuDJDsDv88tF+X1WU7uKNquxycxs3TmocApVfWWvmIbl+RqYN+q+n7fscyW5Nm0xP9c2ufYY4EjqurUqf5ck+v1usoIf8jMUjz/MIRkIq2O9K/TFubtRpuD9Zmq6nU7YN06Q61esiXoyj2+nDZC92Hgk93xn9IqI/S+OApu0cG7Cfifqrqpr3hGkjwYOIJWQxraXbBjh1J5QJsvydeYeze6HWjVEvbsJ7IZsexPW8A4PrL+4ZpyveFN1S3K+y9ap3NdqbaqOq23oIAkv8LcdyR62zlytm6K3sE1kC3jxyX5EvDk0Wh114n65LQX+Zpcj+lqhf6Y9XNenwvctYazscKdaAn2Y2llgqiqDY7QLpS0Os2vZ33H5HO0UbpeFoQk+Qkz70IUrZrJp4HX9BXXSNfT/9P5zvc1nQYgyX+w4Sk1fVcL+TBtk6LzgCcC96SNSLyyqi7uMzbdNnO8btedYjiLywcnyVeB/Wffkes6eB+vqr3mvnJhJPlb4EG0+dbjI+vPB75eVa/sK7aRIVQG2RxJ9quq/+47DoAk/07bE+HTzJzG1Xt1nySXVtU+Y8e3ow3C7LOBy277zzW5Xi/J5VW198ba+pBkOW0L1M/TSsp9ru+pDeO6GqGfBd7fNT0PeHxVPWn+qxZWV6rthcCvVdWzeo7lB7RR17kWkfU2nQbmvyU/0vet+fE3y66O6Xdotbh7v8M0dHN0nNZ1Oqvq/XNfpaFLz7vRbUySr81VIrNbRPu1gYysvwn4/FCmRsG697dn00atP1ZVX07y28CfAYuHcvcz8+zAOZBSfMcCD2F9FZhD4P9v7+6D7KrrO46/P8EIIQQhnalFNGDBdkSClBQTqHWktKMgIm1twWBxHJAHbaFDdSzVYWR0bKGDrRZEbEOF2sIwg7RUlDr4UKESCgEi1KdCwAAaBQFHQKwkn/7xOzd79ububh723t+5y+c1s5O952bnfPOwZ3/nd74P3G17UNek2TtvFtcTJH0auMj26ub1cuBdtk+qGxlIuhjoJeFv/kdzxZ65bZLusX1g37G7h313uD3UgT7SXYhhXPX/3eXvcutNceO0mPIk7H/dkT7Xse1UcRrdTJqi7ZNt39Z3/FWUyaDVf040T00WUnZef04HnpZI+hQlx/q/geXA9yg1En9u+19rxTVumsYLr25e3mT72qGfM4vrCZK+SRkd22s2vgT4NiVf0jU7TEj6s9bLzT1za+5wtkn6COUCcHVz6M2UAocpUx9qkDQfWFO7W4jKePZ3dOWxXlvTdeBvKH2jz6S0MjqOUtX/ttrdByRtpPQr7e36ZqoHAwAADDxJREFULwCepgM/DMdVs0O2Zpwei8cESYv7Dhl4YlDbxRokLaP0a17ERFrIS4AfUzaw1kz1tc9lku4BDmpaZe4CbAD2q53W2E/S/QxI57JdvVtI07bw+70nm01t3Qv72xvO+nk78r3XCV3vMNEmaWfgP2y/tnYsMOmuv7dLshMTDdtHvuCZokXgnpRHQjfX3vGX9H5Kv/K9KDckV9q+s2ZMPZK+Sqmu3g34K+C9lMmbx1A6ShxZMbwYknHLOY0JrcWNWr/uBqwFThn2QmImkpbYXq8yBn3zzrrtDTXj6mniwvaGpuDtN4Fv1S4aHJendE3NVc8uwB8Ai22fWymkzZqU2sM9Majt+cB/2T50+q/cwfNmcT2emvzh22zvXzuWnmb35GWUby6gXn7ugBaBpkzb+oq700e6d0N3QvOxgJIXdqXtar1f251MJN3b/j/WhYt7s4NzOiWf9OvAZV3owjEOBuxwQrnpPAnY3/aJIw4phqjZZDjV9usrx1H9ujEVSadRJpMKOJ9Sl3MPJY3ggpoduSQ9Ddzbewns17zuPaXrxLyGQSStsb2sA3EMGmu/dtjdQjJEZkxM1TO3XkSTSToFOItSAX4XsIJSfFlll9N27claW6V5GnI+cL6kXwMuA86l/BvX0j73R/re68Jo9sspOZE3AUdTqtSrdxsYE2uY2NmEiZvOLwNn1AoqhsP2Z5qnZLV1afpnvz+mXEMWAN+l3GRuaDawvgzUbHfblQmM09LkAXzzKHnhXVlfPiLpWNvXAUh6E6WIe6i68oePmR3T+rwzPXNbzqJMQFpt+4gmb/fDtYKR9LHp3u9CiyAASc8DjqLsXB9JaXT/gYohAVysiWlqH+8dVJmmdmPFuHoOaHULWUXJ9Y+tYPultWOI0Wnat3ZhvPje012TK1+Pf+7Sn/lpSff1UlVsPy6p6qP9LqWizuBCJjb/ngUeoKSGdMHpwD9L6g3vegj4o2GfNIvrMTEG32TP2H5GEpJ2dhknX7O3artA5jxKD+7OkPQ7lIlqR1MWh1dRHt8+Ne0XjoDtS6c4fi/wpyMOZ5DNgzJsP1u6ecXWmKIWYTNX7K8e20/S2QMO70kZ511tImjLT5l8Te4SS5rvMoDnDb2DTfpZ1RuTMer7fhTw+0yebnkC3Xi6vsn2iuZGE9tPNkWOQ5Wc65gVTRP5t1MWX79FGfIx3/bRVQNjcg5xV0j6EvAvwDW2H68dT1uzm34y8LvAi5rDD1P6cq9y3xS4UWt1C4HyQybdQrZSU4vQTgtpq9pfPbafpP7Ng166z1fdgcmbHc+5XkLpJtE/3XJv4OW2u/C0rtMk3QA8AdzB5OmWF1YLqjHo/94o8sGzuI5Z1/TSfQGl6f3/dSCezl7Yu0jSlZQL5eVMnqb2NkoF+PG1Yosd09fSE8oi7BFKB537K4QUzwGSVtteUTuO6Uh6IZM7mfygZjyDSNoVOAB4wPbQ84a31qA5F7U1qamvAC4A3tN6a3fgPbZfMczzJy0kZl2tDiExa5Z5y2lqDwGrJVXrYrI1JK23vaR2HB2224Bj+wDvk/QB21eNOqDYcZKum+5928eOKpYpzr8CQNJvAHfZfkrSW4FDgI/WTHuUdDDwCcqG0MPN4RdLegI4o2aLVEnHAh8DHgPeD1wM/ADYV9J73YEJiI2vSVrahackLb9KqVXbA3hj6/hPgHcM++TZuY45SdJTTDye2pWSNgBJHZiRpNWUApVrbG9qjs2jFKicbXt5zfimI+lB2y+pHce4aVr03ZgnPONJ0iOUsedXArfSl/bTlQ2PZlLjKynjqD8F/APwh7YHTQ4dVUx3AafZvrXv+Arg0mG3bJuOpLWU6+4LKJ1LDrK9TtIvAl905cmWrS5mz6O04V1HmXDZmVaBkg6zfcuoz5ud65irvtO1POsxcgKlPeDHJT1OuVDuAXypea/LsluwHWw/plSGjrNfAnpF0iuB6yn98v+nalRbeta2m3ZoF9leJenkyjEt7F9YA9heLWlhjYBaNvVmHki63/Y6ANs/lNSFbmHHzPxbqjtV0hY71cOuL8niOuaqLLK2UzPN7XiYmLzlDo3bnaIzAkxMpYttJOkIShFyjCHbG4EbgBua6b1vAb4i6TzbXegW0vMTSecAbwVe0zwRm185ps9Luh64grL7D2U0+0mUv9Oa5jX9tucBm5rPezfB1VssjkEXM4DPtj7fhVKo/71hnzRpITEnSXqILQegbGZ7yveiaFpRvZMyqczAzcAltp+pHNe0bRVtnzeqWMZN3zCqnsWUHzYn2f7W6KOK2dAsqt9AWVjvC1xHmV768HRfN0rNmPGVlOnCNzWdOl5r+4rKcR0FvIlWQSNwne3P1YsKJD0AbGKKITzpW7/tmhu6m20fPtTzZHEdc5Gk7wOXMPVFKQuwGUi6mlL88enm0EpgD9tdGQ4Q20jSPn2HDPyoC/3VY/tJugI4EPgccJXteyqHNC1Ju9N6cm77sYrhTCJp12aoTMxBzfyN623vP9TzZHEdc1Ha7+04Sd+wfcBMx0ZN0rnTvG3bHxxZMBEdIGkTE73f2z/UO1XALek0ylCvZ5iI07Z/uV5UhaTDKKPOd7O9RNIrKYWO76wc2iSS9qNsdJww7HZy466pI9kIPNk6vAE4x/Y1wzx3cq5jrkpx1o67Q9IK26sBJC0Hbq8cE0wsItoWUgbf/AKQxXU8p9iunn+7ld4NHNilHs0tfwu8jpJOg+21kl5TN6RC0osodTArgaXAX9L94vLqmuLZb9TowZ3FdcxVR9YOYFy18nLnU/qXrm9e7wNUz8ltT/2StAg4izId9CpKC8GI6Kb7mGiL2jm2H+xrmrNxqt87CpJOpeTQ7w1cTdlA+LekNW6TNZIOtX3bKE+axXXMSV3K4RtDnW+v1PRlPhs4kTJJ8pCujZGPiC2cQ7lhv5XSDxkA22fWC2mzByUdDljSfMpN+zcrx3QRcAuw0vbtAJKSy7ttlgMnSvou5annSHpwZ3EdEZP02is1lfydI+mvgd8DPgkstf3kDF8SEd1wKaVf/t2ULhhdcjrwUcou8cPAF4B3VY0I9qIMkbmw6bRyNfVbF46b19U4aQoaI2KgVnqIKP1BXwp8u3YRTVO89TPgWTpcvBURk0m6M8O9to+kF1Pyrt9CqTG51vZf1I0qpjIuRRARMWK2l9o+qPn1ZcCrKI8oa8c1z/YC24ts7976WJSFdUSnfV7SqZL2krS491E7KABJl0vao/V6T0mXVY7p0GbHGtsPAY9SetKvA35aM7aYXnauI2KrSbrb9tLacUTE+JF0/4DDXWnFt8Wueu2ddkl3AL9t+7Gmc8lVwJ8ABwMvt/3mWrHF9JJzHRED9Y0ZnwcsYwRjYyNibho0UVDS82vEMsA8SXv2CqObHfXaa6SdWsX5xwOfbPozXyPpropxxQySFhIRk0j6p+bTc4FFzcfOwGcpI4IjIrabiiMlrQIerB1P40JgtaQPSvoQ8DXggsox7SSpt8A/klIM2lN74R/TyD9ORPRb1gwtWA/8Xd97u1Kmq0VEbBNJKyiDUI4DFlO6cby7alAN21dIuhf4dUqh9Ntt164xuRL4T0mPUnKsbwKQtD/w45qBxfSScx0Rk0g6EziD0h2knQbS68ZRPT8yIsaHpA9TWsqtpywYrwVuH5QmUouks4BTgM9QrnXHAX9vu3+DYdRxraC05PuC7aeaY79CGdN+R83YYmpZXEfEQJIusX1G7TgiYrxJ+iHwHcqI8X+3/TNJ67p0oy7p68BhrQXsQuCWYQ8bibkpOdcRMVAW1hExS/YCPgS8EbivqetY0Mon7gIxedz5xuZYxDbr0n/siIiImGNsbwRuAG6QtDNwDLAAeFjSF22vrBpg8Y/ArZKubV4fB6yqGE+MsaSFRERExND0tfWEUjD4KLAWONj2FaOPakuSDgFe3by8yfadNeOJ8ZWd64iIiBimRQOO7Qu8DzhvtKFMrSkQTJFg7LDsXEdERMTINYNabrR9SO1YImZTChojIiJi5JrpgykajDkni+uIiIgYOUlHAI/XjiNitiXnOiIiIoZG0t2UIsa2xZQhVSeNPqKI4UrOdURERAyNpH36Dhn4UW9gS8Rck8V1RERERMQsSc51RERERMQsyeI6IiIiImKWZHEdERERETFLsriOiIiIiJglWVxHRERERMyS/wcjeMFFj3LbUQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# And quickly generate a P@10 graph with all the runs in a directory:\n",
    "\n",
    "# evaluates all the runs in that directory\n",
    "results = procedures.evaluate_runs(runs, qrels, per_query=True)\n",
    "\n",
    "# gets the P@10 value for each run\n",
    "p10 = procedures.extract_metric_from_results(results, \"P_10\")\n",
    "\n",
    "# Plots the results\n",
    "fig = procedures.plot_system_rank(p10, display_metric=\"P@10\", outfile=\"plot.pdf\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-07-30T14:04:58.912139Z",
     "start_time": "2019-07-30T14:04:58.781749Z"
    }
   },
   "outputs": [],
   "source": [
    "fig.savefig(\"plot.pdf\", bbox_inches='tight', dpi=600)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autoclose": false,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
